# encoding: utf-8
""" 
@version: v1.0 
@author: autumner 
@license: Apache Licence  
@contact: 18322313385@163.com 
@site:  {https://gitee.com/autumner/pythoncookbook.git}
@software: PyCharm 
@file: bubble_sort.py 
@time: 2019/7/1 9:38
"""
'''
冒泡排序每次找出一个最大的元素，因此需要遍历 n-1 次。还有一种优化算法，就是立一个flag，当在一趟序列遍历中元素没有发生交换，则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。
'''
def bubbleSort(nums):
    for i in range(len(nums) - 1):
        # 遍历len(nums) - 1 次
        for j in range(len(nums) - i - 1):
            # 已排好序的部分不用再次遍历
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
                # Python 交换两个数不用中间变量
    return nums

# Example use
nums = [3, 2, 15, 26, 27,36, 38, 47, 2, 19, 48, 50, 44, 4]
print(bubbleSort(nums))